home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / apps / database / ingres04.lzh / source / iutil / lockreq.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-06-11  |  841 b   |  40 lines

  1. #include <ingres.h>
  2. #include "ildr.h"
  3. #include <lock.h>
  4. #include <sccs.h>
  5. #include <signal.h>
  6.  
  7. SCCSID(%W%    %G%)
  8.  
  9. /*
  10.  *    LOCKREQ.C
  11.  *
  12.  *    This file contains code for the client half of the lock
  13.  *    driver system.
  14.  *
  15.  */
  16.  
  17. static    int    pid;
  18.  
  19. dolock(lock)
  20. struct    lockreq    *lock;
  21. {
  22.     struct    Lockreq        slock;
  23.     auto    int        ret_val;
  24.     extern    int        Alockdes;
  25.  
  26.     /* translate lock to slock */
  27.     slock.lr_act = lock->lract;
  28.     slock.lr_type = lock->lrtype;
  29.     slock.lr_mod = lock->lrmod;
  30.     /* this bcopy copys three char [4] fields into one char [12] field
  31.        KEYSIZE happens to equal 12 */
  32.     bcopy(lock->dbnode, slock.lr_key, KEYSIZE);    /* XXX */
  33.     if (write(Alockdes, &slock, sizeof(slock)) != sizeof(slock))
  34.       syserr("lock write fail");
  35.     if (read(Alockdes, &ret_val, sizeof(int)) != sizeof(int))
  36.       syserr("lock read fail");
  37.     /* translate ret_val */
  38.     return(ret_val);
  39. }
  40.